1. Field
The present disclosure generally relates to network communication between a sender and a receiver, and more specifically relates to network communication between a sender and a receiver using acknowledgments.
2. Description of the Related Art
When transferring data from a sender to a receiver over a network, reliability of the data transfer is often an issue. Here, “reliability” refers to verification that all data transmitted by the sender is received by the receiver.
Two distinct mechanisms have been developed to address the issue of reliability in data transfer: positive acknowledgment (ACK) and negative acknowledgment (NACK). In an ACK mechanism, the receiver notifies the sender that it has successfully received a data packet. If the sender does not receive an ACK message from the receiver within a period of time, which might be related to network round trip time (RTT), or if the sender's memory buffer which holds unacknowledged data packets is substantially full, then the sender assumes that the data packet has been lost and resends it.
In a NACK mechanism, the receiver notifies the sender that a data packet that had been expected has not yet been received. In this latter regard, a NACK message might be triggered if the receiver realizes that there is a gap in sequence numbers of received data packets, and that the gap has persisted for more than a pre-agreed time, which might be related to network RTT, or a NACK message might be triggered if the receiver's memory buffer becomes substantially full. Upon receipt of a NACK message, the sender will re-send the data packet.